﻿using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web.Mvc;
using CP_SchoolForChildren_v0._1.Models.DataModel;

namespace CP_SchoolForChildren_v0._1.Models.RelatedModel

{
    public class ChangePasswordModel
    {
        [Required (ErrorMessage="Hãy nhập mật khẩu")]
        [StringLength(100, ErrorMessage = "{0} phải có ít nhất {2} ký tự.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu cũ")]
        public string OldPassword { get; set; }

        [Required (ErrorMessage="Hãy nhập mật khẩu mới")]
        [StringLength(100, ErrorMessage = "{0} phải có ít nhất {2} ký tự.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu mới")]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Xác nhận lại mật khẩu")]
        [Compare("NewPassword", ErrorMessage = "Mật khẩu không khớp.")]
        public string ConfirmPassword { get; set; }
    }

    public class ChangeEmailModel
    {

        [Required(ErrorMessage = "Hãy nhập mật khẩu")]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Hãy điền địa chỉ email")]
        [DataType(DataType.EmailAddress)]
        [RegularExpression("^[a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", ErrorMessage = "Email không đúng")]
        [Display(Name = "Địa chỉ email")]
        public string Email { get; set; }


        [DataType(DataType.EmailAddress)]
        [Display(Name = "Xác nhận địa chỉ Email")]
        [Compare("Email", ErrorMessage = "Xác nhận Email không trùng. Xin hãy nhập lại.")]
        public string ConfirmEmail { get; set; }
 
    }

    public class LogOnModel
    {
        [Required (ErrorMessage="Hãy điền tên đăng nhập")]
        [Display(Name = "Tên đăng nhập")]
        public string UserName { get; set; }

        [Required (ErrorMessage="Hãy nhập mật khẩu")]
        [StringLength(100, ErrorMessage = "{0} phải có ít nhất {2} ký tự.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu")]
        public string Password { get; set; }

        [Display(Name = "Tự động đăng nhập lần sau")]
        public bool RememberMe { get; set; }
    }

    public class RegisterModel
    {
        [Required(ErrorMessage = "Hãy điền tên đăng nhập")]
        [RegularExpression("^[a-zA-Z0-9_.]{4,20}$", ErrorMessage = "Tên đăng nhập không hợp lệ. Tên cần có 4-20 kí tự không bao gồm kí tự đặc biệt")]
        [Display(Name = "Tên đăng nhập")]
        public string UserName { get; set; }

        [Required(ErrorMessage = "Hãy điền địa chỉ email")]
        [DataType(DataType.EmailAddress)]
        [StringLength(50, ErrorMessage = "Email chứa từ 6 - 50 kí tự.", MinimumLength = 6)]
        [RegularExpression("^[a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", ErrorMessage = "Email không đúng")]
        [Display(Name = "Địa chỉ email")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Hãy xác nhận địa chỉ Email")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Xác nhận địa chỉ Email")]
        [Compare("Email", ErrorMessage = "Xác nhận Email không khớp")]
        public string ConfirmEmail { get; set; }

        [Required(ErrorMessage = "Hãy nhập mật khẩu")]
        [StringLength(100, ErrorMessage = "{0} tối thiểu phải có {2} ký tự.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Hãy xác nhận mật khẩu")]
        [DataType(DataType.Password)]
        [Display(Name = "Xác nhận lại mật khẩu")]
        [Compare("Password", ErrorMessage = "Mật khẩu không trùng")]
        public string ConfirmPassword { get; set; }


        [Required(ErrorMessage = "Hãy nhập ngày sinh")]
        [DataType(DataType.Date) ]
        [DisplayFormat(DataFormatString = "{0:dd/mm/yyyy}")]
        [Display(Name = "Ngày sinh")]
        public DateTime DOB { get; set; }

        [Required(ErrorMessage = "Hãy chọn giới tính")]
        [Display(Name = "Giới tính")]
        public string Gender { get; set; }

        [Required(ErrorMessage = "Hãy nhập câu trả lời")]
        [Display(Name = "Kết quả của phép tính này")]
        public string Captcha { get; set; }
    }

    public class ForgotPasswordModel
    {
        [Required(ErrorMessage = "Xin hãy nhập địa chỉ email của bạn.")]
        [RegularExpression("^[a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", ErrorMessage = "Địa chỉ email không đúng")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Địa chỉ email")]
        public string Email { get; set; }

    }
    
    public class AvataModel
    {
        [UIHint("ProfileImage")]
        public string AvatarURL { get; set; }
    }

    public class CheckUserProfile
    {
        private SFCEntities db = new SFCEntities();

        public bool isEmailExist(String email)
        {
            var emailExist = db.Users.Any(u => u.Email == email);
            return emailExist;
        }

        public bool isUsernameExist(String username)
        {
            var nicknameExist = db.Users.Any(u => u.UserName == username);
            return nicknameExist;
        }

        public string GetPasswordFromUserName(string username)
        {
            var userToGetPass = db.Users.First(u => u.UserName == username);
            return userToGetPass.Password;
        }

    }

}